home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The 640 MEG Shareware Studio 2
/
The 640 Meg Shareware Studio CD-ROM Volume II (Data Express)(1993).ISO
/
pascal
/
tpb4_src.zip
/
EDITUSR2.PAS
< prev
next >
Wrap
Pascal/Delphi Source File
|
1988-09-13
|
8KB
|
235 lines
{ TPBoard 4.2 Copyright (c) 1987,88 by Jon Schneider & Rick Petersen
Portions Copyright (c) 1986,87 by Steve Fox and Les Archambault
Last modified :: 4-14-88 3:08 pm
}
{$R-} {Range checking off}
{$B-} {Boolean complete evaluation off}
{$S-} {Stack checking off}
{$I+} {I/O checking on}
{$N-} {No numeric coprocessor}
Unit EditUsr2;
Interface
Uses
TPCrt, Dos, Globals, TAccess, Core1,
Core2, TPSTRING, MsgMisc;
procedure validate_user(ed_fn : FirstName; ed_ln : LastName);
procedure delete_user;
{==========================================================================}
Implementation
procedure validate_user(ed_fn : FirstName; ed_ln : LastName);
{ Change user access time and level to 'validated' status }
var
temp_user_loc : LongInt;
key : StrName;
temp_user_rec : user_list;
begin
if ((not remote_copy) and remote_online) then
begin
if ask('Validate '+user_rec.fn+' '+user_rec.ln, 'Y') then
begin
user_rec.access := val_acc;
user_rec.limit := val_time;
user_rec.Flags := 0;
WriteLn(Com, user_rec.fn, ' ', user_rec.ln, ' validated.')
end;
end
else
begin
OK := True;
SetSect(HomName);
if ed_fn = '' then
begin
ed_fn := trim(prompt('First Name', len_fn, 'ESN'));
if ed_fn <> '' then
ed_ln := trim(prompt('Last Name', len_ln, 'ESN'));
if (ed_fn = '') or (ed_ln = '') then
OK := False;
end;
if OK then
begin
key := pad(ed_ln, len_ln)+pad(ed_fn, len_fn);
FindKey(IdxF, temp_user_loc, key);
end;
if OK then
GetRec(DatF, temp_user_loc, temp_user_rec)
else
WriteLn(Com, 'Name not found.');
if OK then
begin
if (temp_user_rec.access < user_rec.access) and
(ask('Validate '+temp_user_rec.fn+' '+temp_user_rec.ln, 'Y')) then
begin
temp_user_rec.access := val_acc;
temp_user_rec.limit := val_time;
temp_user_rec.Flags := 0;
PutRec(DatF, temp_user_loc, temp_user_rec);
WriteLn(Com, temp_user_rec.fn, ' ', temp_user_rec.ln, ' validated.')
end;
end;
end;
end;
procedure delete_user;
{ Delete user from file }
var
i : Integer;
temp_user_loc : LongInt;
del_fn : FirstName;
del_ln : LastName;
key : StrName;
temp_user_rec : user_list;
This : MesgPtr;
err : Boolean;
begin
err := False;
OK := True;
SetSect(HomName);
del_fn := trim(prompt('First Name', len_fn, 'ESN'));
if del_fn <> '' then
del_ln := trim(prompt('Last Name', len_ln, 'ESN'));
if (del_fn = '') or (del_ln = '') then
OK := False;
if OK then
begin
WriteLn(Com);
key := pad(del_ln, len_ln)+pad(del_fn, len_fn);
SearchKey(IdxF, temp_user_loc, key);
end
else
temp_user_loc := 0;
if OK and (temp_user_loc <= FileLen(DatF)) then
begin
GetRec(DatF, temp_user_loc, temp_user_rec);
WriteLn(Com, 'Found User: ', temp_user_rec.fn, ' ', temp_user_rec.ln);
WriteLn(Com);
if temp_user_rec.access < user_rec.access then
if ask('Delete', 'N') then
begin
DeleteKey(IdxF, temp_user_loc, key);
if OK then
begin
DeleteRec(DatF, temp_user_loc);
WriteLn(Com);
WriteLn(Com, 'Revising message summary file.');
for i := 1 to Pred(FileSize(summ_file)) do
begin { Delete messages pertaining to user }
{$I-}
Seek(summ_file, i); {$I+}
err := (IoResult <> 0);
{$I-}
Read(summ_file, summ_rec); {$I+}
err := (IoResult <> 0);
if (((summ_rec.user_to = temp_user_loc) or (summ_rec.user_from =
temp_user_loc))) and
(not err) then
begin
if summ_rec.user_to = temp_user_loc then
summ_rec.user_to := -1;
if summ_rec.user_from = temp_user_loc then
summ_rec.user_from := -1;
This := MesgBase;
while (This <> nil) and (This^.MesgNo <> summ_rec.num) do
This := This^.next;
if This^.MesgNo = summ_rec.num then
begin
MesgCurr := This;
mesg_delete;
end;
end;
end;
if err then
begin
log(10, 'Del User');
log(10, 'Msg File');
end;
{now clear newin file references}
WriteLn(Com, 'Revising Newin file.');
{$I-}
Seek(nwin_file, 0); {$I+}
err := (IoResult <> 0);
while (not EoF(nwin_file)) and (not err) do
begin
{$I-}
Read(nwin_file, nwin_rec); {$I+}
err := (IoResult <> 0);
if (not err) then
begin
if nwin_rec.user = temp_user_loc then
begin
nwin_rec.user := 0;
Seek(nwin_file, Pred(FilePos(nwin_file)));
Write(nwin_file, nwin_rec);
end;
end;
end;
if err then
begin
log(10, 'Del User');
log(10, 'Newin File');
end;
{now finally, the log file}
if FileSize(logr_file) > 1 then
begin
WriteLn(Com, 'Revising the Log file.');
{$I-}
Seek(logr_file, 1); {$I+}
err := (IoResult <> 0);
while (not EoF(logr_file)) and (not err) do
begin
{$I-}
Read(logr_file, logr_rec); {$I+}
err := (IoResult <> 0);
if (not err) then
begin
if logr_rec.user = temp_user_loc then
begin
logr_rec.user := 0;
Seek(logr_file, Pred(FilePos(logr_file)));
Write(logr_file, logr_rec);
FlushAny(logr_file);
end;
end;
end;
end; {revising log file}
if err then
begin
log(10, 'Del User');
log(10, 'Log File');
end;
if (not err) and OK then
WriteLn(Com, key, ' deleted.');
WriteLn(Com);
end; {OK - revising files}
end; { wants to delete}
end {key found}
else if temp_user_loc > FileLen(DatF) then
begin
WriteLn(Com, 'Bad User Number - can not use.');
log(10, 'delete user');
log(10, 'User Number');
end;
end; {delete user}
end. { OF EDITUSR2 }